docs(agents): point os-dev.md at AGENTS.md's body-mutation clause instead of a narrow local copy - #9838
Merged
Conversation
…tead of a narrow local copy
The sanitizer's shape was described twice: AGENTS.md carries the binding
body-mutation clause ("GitHub mutates body BYTES - spell poison-shaped
tokens out in words, never literally"), which names the two measured
mutation shapes and points at the pm-dispatch reading ledger for their
triggers. os-dev.md carried an older, narrower restatement that knew only
one member of that family, so the local copy was already drifting behind
its authoritative home.
Replace the local shape description with a one-line pointer at AGENTS.md's
clause - one rule, one home. The operative os-dev-specific instructions
around it are untouched: the attribution-footer form and its code block
stay, as does the separate instruction to read back your own report comment
after posting it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeA3nU1B5Q2pgxqxgUrexd
This was referenced Aug 19, 2026
os-warren
marked this pull request as ready for review
August 19, 2026 05:11
This was referenced Aug 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #9717
What changed
.claude/agents/os-dev.mdonly, in the 字节与 sanitizer 纪律 section. The paragraph thatdescribed the GitHub body sanitizer's shape locally is replaced by a one-line pointer at
AGENTS.md's binding body-mutation clause ("GitHub mutates body BYTES — spell poison-shaped
tokens out in words, never literally", AGENTS.md line 303).
The local wording knew only one member of the mutation family — that a less-than sign
followed by a letter is stripped as an HTML tag. AGENTS.md's clause is the fuller home: it
states the author rule in general terms, says fences do not protect a poison-shaped token,
requires reading the body back after writing any less-than fragment, and points at
.claude/skills/pm-dispatch/references/platform-readings.mdfor the two measured mutationshapes and their triggers. The local copy was therefore a stale, narrower restatement — one
rule, one home.
Kept deliberately (operative os-dev-specific instruction, not shape description):
textcode block showing the bare form versus thesession-URL form, plus the trailing note that comments are a different path;
it, because the report marker can be eaten after it lands.
Net diff is 3 insertions / 4 deletions — one line shorter, so the ratchet ceiling is
unaffected. No changeset: this is agent instruction text under
.claude/, nothing published.Verification
Gate families derived from the real change set with
node scripts/pm/dispatch-gates.mjs(no paths passed — the script takes the change set fromthe merge base itself), re-derived after the final commit and identical both times. All eight
run locally on head
60336203b, quoting each gate's own verdict line:check:agent-model-declared✓ check-agent-model-declared: 1 agent definition(s) under .claude/agents/ all declare a modelcheck:doc-authoring✓ doc authoring guard: 377 files clean — no bare metadata literals.check:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 396 files / 1413 TS blocks judged cleancheck:nul-bytescheck-nul-bytes: OK (scanned 6278 text file(s) ... no raw ASCII control bytes).check:pm-governed-merges✓ check-governed-merges --self-test: 77 assertionscheck:pm-skill-id-lint✓ check-skill-id-lint: 9 file(s) clean (pattern /#[0-9]{3,}/g).check:pm-skill-ratchet✓ check-skill-line-ratchet: .claude/agents/os-dev.md is 352 lines (ceiling 399; headroom 47).check:skill-frame-sync✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 filesLine budget: 353 before, 352 after, ceiling 399.
check:doc-formula-expressionsfirst failed withERR_MODULE_NOT_FOUNDon@objectstack/formula/dist/index.mjs— a fresh worktree with no built dependency closure,not a finding. Green after
pnpm --filter '@objectstack/lint^...' build.Governed surface under
.claude/— opened as draft and left draft for a human to merge;auto-merge not enabled.
Premise re-verification
The card's hard same-file serial is discharged. No open pull request touches
.claude/agents/os-dev.md: all twelve open PRs were checked by diffing each head against itsmerge base with
origin/main. One first-pass scan appeared to hit, which was an artifact ofthe shared checkout being a shallow clone —
git merge-basereturns empty there, and thecomparison silently degrades. Re-checked after
git fetch --deepen, the hit disappears andevery branch reports no change to this file.
Generated by Claude Code